home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / include / linux / usb / vstusb.h < prev   
C/C++ Source or Header  |  2009-10-16  |  2KB  |  72 lines

  1. /*****************************************************************************
  2.  *  File: drivers/usb/misc/vstusb.h
  3.  *
  4.  *  Purpose: Support for the bulk USB Vernier Spectrophotometers
  5.  *
  6.  *  Author:     EQware Engineering, Inc.
  7.  *              Oregon City, OR, USA 97045
  8.  *
  9.  *  Copyright:  2007, 2008
  10.  *              Vernier Software & Technology
  11.  *              Beaverton, OR, USA 97005
  12.  *
  13.  *  Web:        www.vernier.com
  14.  *
  15.  *  This program is free software; you can redistribute it and/or modify
  16.  *  it under the terms of the GNU General Public License version 2 as
  17.  *  published by the Free Software Foundation.
  18.  *
  19.  *****************************************************************************/
  20. /*****************************************************************************
  21.  *
  22.  *  The vstusb module is a standard usb 'client' driver running on top of the
  23.  *  standard usb host controller stack.
  24.  *
  25.  *  In general, vstusb supports standard bulk usb pipes.  It supports multiple
  26.  *  devices and multiple pipes per device.
  27.  *
  28.  *  The vstusb driver supports two interfaces:
  29.  *  1 - ioctl SEND_PIPE/RECV_PIPE - a general bulk write/read msg
  30.  *      interface to any pipe with timeout support;
  31.  *  2 - standard read/write with ioctl config - offers standard read/write
  32.  *      interface with ioctl configured pipes and timeouts.
  33.  *
  34.  *  Both interfaces can be signal from other process and will abort its i/o
  35.  *  operation.
  36.  *
  37.  *  A timeout of 0 means NO timeout.  The user can still terminate the read via
  38.  *  signal.
  39.  *
  40.  *  If using multiple threads with this driver, the user should ensure that
  41.  *  any reads, writes, or ioctls are complete before closing the device.
  42.  *  Changing read/write timeouts or pipes takes effect on next read/write.
  43.  *
  44.  *****************************************************************************/
  45.  
  46. struct vstusb_args {
  47.     union {
  48.         /* this struct is used for IOCTL_VSTUSB_SEND_PIPE,    *
  49.          * IOCTL_VSTUSB_RECV_PIPE, and read()/write() fops    */
  50.         struct {
  51.             void *buffer;
  52.             size_t          count;
  53.             unsigned int    timeout_ms;
  54.             int             pipe;
  55.         };
  56.  
  57.         /* this one is used for IOCTL_VSTUSB_CONFIG_RW      */
  58.         struct {
  59.             int rd_pipe;
  60.             int rd_timeout_ms;
  61.             int wr_pipe;
  62.             int wr_timeout_ms;
  63.         };
  64.     };
  65. };
  66.  
  67. #define VST_IOC_MAGIC 'L'
  68. #define VST_IOC_FIRST 0x20
  69. #define IOCTL_VSTUSB_SEND_PIPE    _IO(VST_IOC_MAGIC, VST_IOC_FIRST)
  70. #define IOCTL_VSTUSB_RECV_PIPE    _IO(VST_IOC_MAGIC, VST_IOC_FIRST + 1)
  71. #define IOCTL_VSTUSB_CONFIG_RW    _IO(VST_IOC_MAGIC, VST_IOC_FIRST + 2)
  72.